// 设置文件
import setting from '@/setting.js'

export default {
	namespaced: true,
	state: {
		// 顶栏菜单
		header: [],
		// 侧栏菜单
		aside: [],
		// 侧边栏收缩
		asideCollapse: setting.menu.asideCollapse
	},
	actions: {
		/**
		 * 设置侧边栏展开或者收缩
		 * @param {Object} state vuex state
		 * @param {Boolean} collapse is collapse
		 */
		asideCollapseSet ({ state, dispatch }, collapse) {
			return new Promise(async resolve => {
				// store 赋值
				state.asideCollapse = collapse
				// 持久化
				await dispatch('db/set', {
					dbName: 'sys',
					path: 'menu.asideCollapse',
					value: state.asideCollapse,
					user: true
				}, { root: true })
				// end
				resolve()
			})
		},
		/**
		 * 切换侧边栏展开和收缩
		 * @param {Object} state vuex state
		 */
		asideCollapseToggle ({ state, dispatch }) {
			return new Promise(async resolve => {
				// store 赋值
				state.asideCollapse = !state.asideCollapse
				// 持久化
				await dispatch('db/set', {
					dbName: 'sys',
					path: 'menu.asideCollapse',
					value: state.asideCollapse,
					user: true
				}, { root: true })
				// end
				resolve()
			})
		},
		/**
		 * 从持久化数据读取侧边栏展开或者收缩
		 * @param {Object} state vuex state
		 */
		asideCollapseLoad ({ state, dispatch }) {
			return new Promise(async resolve => {
				// store 赋值
				state.asideCollapse = await dispatch('db/get', {
					dbName: 'sys',
					path: 'menu.asideCollapse',
					defaultValue: setting.menu.asideCollapse,
					user: true
				}, { root: true })
				// end
				resolve()
			})
		}
	},
	mutations: {
		/**
		 * @description 设置顶栏菜单
		 * @param {Object} state vuex state
		 * @param {Array} menu menu setting
		 */
		headerSet (state, menu) {
			// store 赋值
			state.header = menu
		},
		/**
		 * @description 设置侧边栏菜单
		 * @param {Object} state vuex state
		 * @param {Array} menu menu setting
		 */
		asideSet (state, menu) {
			// store 赋值
			state.aside = menu
		},
		fullAsideSet(state, menu) {
			// store 赋值
			state.fullAside = menu
		}
	}
}
